18869
15457
Я хочу удалить ветку как локально, так и удаленно.
Неудачные попытки удалить удаленную ветку
$ git branch -d пульты / происхождение / исправление
ошибка: ветка "удаленные / происхождение / исправление" не найдена.
$ git branch -d происхождение / исправление
ошибка: ветка origin / bugfix не найдена.
$ git branch -rd origin / bugfix
Удален источник / исправление удаленной ветки (было 2a14ef7).
$ git push
Все актуально
$ git pull
С github.com:gituser/gitproject
* [новая ветка] bugfix -> origin / bugfix
Уже актуально.
Что мне следует сделать по-другому, чтобы успешно удалить ветку remotes / origin / bugfix как локально, так и удаленно? 
1
2
следующий
Управляющее резюме
$ git push -d <имя_пульта> <имя_ответки>
$ git branch -d <имя_ответки>
Обратите внимание, что в большинстве случаев удаленное имя - origin.
В таком случае вам придется использовать такую ​​команду.
$ git push -d origin <имя_ответки>
Удалить локальную ветвь
Чтобы удалить локальную ветку, используйте одно из следующих действий:
$ git branch -d имя_ветки
$ git branch -D имя_ветки
Примечание. Параметр -d является псевдонимом для --delete, который удаляет ветвь только в том случае, если она уже была полностью объединена с ветвью восходящего потока. Вы также можете использовать -D, который является псевдонимом для --delete --force, который удаляет ветку «независимо от ее объединенного статуса». [Источник: man git-branch]
Также обратите внимание, что git branch -d branch_name завершится ошибкой, если вы в настоящее время
в ветке, которую хотите удалить. Сообщение начинается с
ошибка: не удается удалить ветку "имя_ветки". Если да, сначала переключите
в другую ветку, например: git checkout master.
Удалить удаленную ветку [Обновлено 8 сентября 2017 г.]
Начиная с Git v1.7.0, вы можете удалить удаленную ветку, используя
$ git push <имя_удаления> --delete <имя_ответки>
что может быть легче запомнить, чем
$ git push <имя_пульта>: <имя_ответки>
который был добавлен в Git v1.5.0 «для удаления удаленной ветки или тега».
Начиная с Git v2.8.0, вы также можете использовать git push с параметром -d в качестве псевдонима для --delete.
Таким образом, установленная вами версия Git будет определять, нужно ли вам использовать более простой или более сложный синтаксис.
Удалить удаленную ветку [Исходный ответ от 5 января 2010 г.]
Из главы 3 Pro Git Скотта Чакона:
Удаление удаленных филиалов
Предположим, вы закончили работу с удаленной веткой - скажем, вы и ваши соавторы закончили работу над функцией и объединили ее в главную ветку удаленного компьютера (или в любую другую ветку, в которой находится ваша стабильная строка кода). Вы можете удалить удаленную ветку, используя довольно тупой синтаксис git push [remotename]: [branch]. Если вы хотите удалить ветку server-fix с сервера, выполните следующее:
$ git push origin: serverfix
На git@github.com: schacon / simplegit.git
- [удалено] исправление сервера
Бум. На вашем сервере больше нет веток. Возможно, вы захотите выслушать эту страницу, потому что вам понадобится эта команда, и вы, вероятно, забудете синтаксис. Чтобы запомнить эту команду, можно вызвать синтаксис git push [remotename] [localbranch]: [remotebranch], который мы рассмотрели немного ранее. Если вы опустите часть [localbranch], то вы, по сути, говорите: «Не принимайте ничего на моей стороне и сделайте это [remotebranch]».
Я выпустил git push origin: bugfix, и он отлично сработал. Скотт Чакон был прав - я хочу выслушать эту страницу (или практически собачьим ухом, ответив на этот вопрос в Stack Overflow).
Затем вы должны выполнить это на других машинах
# Получить изменения со всех пультов и локально удалить
# удаленные удаленные ветки / теги и т. д.
# --prune выполнит работу: -;
git fetch --all --prune
распространять изменения.
|
Ответ Мэтью отлично подходит для удаления удаленных веток, и я также ценю объяснение, но чтобы провести простое различие между двумя командами:
Чтобы удалить локальную ветку с вашего компьютера:
git branch -d {the_local_branch} (используйте -D вместо того, чтобы принудительно удалить ветку без проверки объединенного статуса)
Чтобы удалить удаленную ветку с сервера:
git push origin --delete {the_remote_branch}
Ссылка: Git: удалить ветку (локальную или удаленную)
|
Короткие ответы
Если вам нужны более подробные объяснения следующих команд, см. Подробные ответы в следующем разделе.
Удаление удаленной ветки
git push origin --delete  # Git версии 1.7.0 или новее
git push origin -d  # Более короткая версия (Git 1.7.0 или новее)
git push origin:  # Версии Git старше 1.7.0
Удаление локальной ветки
git branch --delete <ветка>
git branch -d  # Более короткая версия
git branch -D  # Принудительно удалить не объединенные ветки
Удаление локальной ветки удаленного отслеживания
git branch --delete --remotes <удаленный> / <ветка>
git branch -dr  /  # Короче
git fetch  --prune # Удалить несколько устаревших веток удаленного отслеживания
git fetch  -p # Короче
Длинный ответ: нужно удалить три разных ветки!
Когда вы имеете дело с удалением веток как локально, так и удаленно, имейте в виду, что задействованы три разные ветки:
Местное отделение X.
Ветвь удаленного происхождения X.
Локальный источник ветки удаленного отслеживания / X, который отслеживает удаленную ветку X.
В оригинальном плакате использовались:
git branch -rd origin / bugfix
Которая удалила только его локальную ветку удаленного отслеживания origin / bugfix, а не фактическое исправление ошибки удаленной ветки в origin.
Чтобы удалить эту фактическую удаленную ветку, вам нужно
git push origin - удалить ошибку
Дополнительные детали
В следующих разделах описываются дополнительные сведения, которые следует учитывать при удалении веток удаленного и удаленного отслеживания.
Нажатие на удаление удаленных веток также удаляет ветки удаленного отслеживания
Обратите внимание, что удаление удаленной ветви X из командной строкииспользование git push также удалит локальную ветку удаленного отслеживания origin / X, поэтому нет необходимости обрезать устаревшую ветку удаленного отслеживания с помощью git fetch --prune или git fetch -p. Впрочем, это не повредит, если вы все равно это сделаете.
Вы можете убедиться, что исходная ветка удаленного отслеживания / X также была удалена, выполнив следующее:
# Просмотр только веток удаленного отслеживания
git branch --remotes
git branch -r
# Просмотр как строго локальных, так и удаленных веток отслеживания
git ветка - все
git branch -a
Удаление устаревшей локальной ветки удаленного отслеживания origin / X
Если вы не удалили удаленную ветку X из командной строки (как указано выше), то ваш локальный репозиторий по-прежнему будет содержать (теперь устаревшую) ветку удаленного отслеживания origin / X. Это может произойти, если, например, вы удалили удаленную ветку напрямую через веб-интерфейс GitHub.
Типичный способ удалить эти устаревшие ветки удаленного отслеживания (начиная с Git версии 1.6.6) - просто запустить git fetch с параметром --prune или короче -p. Обратите внимание, что это удаляет все устаревшие локальные ветки удаленного отслеживания для всех удаленных ветвей, которые больше не существуют на удаленном компьютере:
git fetch origin --prune
git fetch origin -p # Короче
Вот соответствующая цитата из примечаний к выпуску 1.6.6 (выделено мной):
"git fetch" изучил --all и --multipleoptions, чтобы запускать выборку из
множество репозиториев и параметр --prune для удаления удаленного отслеживания
ветки, которые стали черствыми. Они делают "git remote update" и "git
удаленное удаление "менее необходимо (удаление" удаленного
обновить "или" удаленную очистку ").
Альтернатива вышеуказанной автоматической обрезке для устаревших веток удаленного отслеживания
В качестве альтернативы, вместо того, чтобы обрезать устаревшие локальные ветки удаленного отслеживания с помощью git fetch -p, вы можете избежать дополнительных сетевых операций, просто вручную удалив ветки с флагами --remote или -r:
git branch --delete --remotes origin / X
git branch -dr origin / X # Короче
Смотрите также
git-branch (1) Страница руководства.
git-fetch (1) Страница руководства.
Pro Git § 3.5 Ветвление Git - удаленные ветки.
|
Шаги по удалению ветки:
Для удаления удаленной ветки:
git push origin --delete <ваша_ ветка>
Удалить локальную ветку можно тремя способами:
1: git branch -D <имя_ответки>
2: git branch --delete --force  # То же, что -D
3: git branch --delete  # Ошибка при отключении
Объясните: хорошо, просто объясните, что здесь происходит!
Просто выполните git push origin --delete, чтобы удалить только удаленную ветку, добавьте имя ветки в конце, и это удалит и одновременно отправит ее на удаленный ...
Кроме того, git branch -D, который просто удаляет только локальную ветку! ...
-D означает --delete --force, который удалит ветку, даже если она не объединена (принудительное удаление), но вы также можете использовать -d, что означает --delete, которая выдает ошибку, соответствующую статусу слияния ветки ...
Я также создаю изображение ниже, чтобы показать шаги:
|
Вы также можете использовать следующее, чтобы удалить удаленную ветку
git push --delete origin serverfix
Что делает то же самое, что и
git push origin: serverfix
но может быть легче запомнить.
|
Совет: при удалении веток с помощью
git branch -d  # Удаляет локальную ветку
или
git push origin:  # Удаляет удаленную ветку
удаляются только ссылки. Несмотря на то, что ветка фактически удалена на удаленном компьютере, ссылки на нее все еще существуют в локальных репозиториях членов вашей команды. Это означает, что для других членов команды удаленные ветки все еще видны, когда они выполняют команду git branch -a.
Чтобы решить эту проблему, члены вашей команды могут обрезать удаленные ветки с помощью
git remote prune <репозиторий>
Обычно это git remote prune origin.
|
Если вы хотите удалить ветку, сначала сделайте заказ в ветку, отличную от ветки, которую нужно удалить.
git checkout other_than_branch_to_be_deleted
Удаление локальной ветки:
git branch -D branch_to_be_deleted
Удаление удаленной ветки:
git push origin --delete branch_to_be_deleted
|
git branch -D <имя- ветки>
git branch -D -r origin / <имя-ветки>
git push origin: <имя-ветки>
|
Это просто: просто выполните следующую команду:
Чтобы удалить ветку Git как локально, так и удаленно, сначала удалите локальную ветку с помощью этой команды:
git branch -d пример
(Вот пример - название ветки.)
И после этого удалите удаленную ветку с помощью этой команды:
git push origin: пример
|
Все очень просто:
Чтобы удалить удаленную ветку
git push -d origin <имя-ветки>
Или
git push origin: <имя-ветки>
Чтобы принудительно удалить локальную ветку
git branch -D <имя-ветки>
|
Другой подход:
git push --prune origin
ВНИМАНИЕ: это приведет к удалению всех удаленных ветвей, которые не существуют локально. Или более подробно,
git push --mirror
фактически сделает удаленный репозиторий похожим на локальную копию репозитория (локальные заголовки, пульты и теги зеркалируются на удаленном).
|
В настройках Bash я использую следующее:
псевдоним git-shot = "git pushorigin --delete "
Тогда вы можете позвонить:
git-стрелять ветвью
|
Удалить локально:
Чтобы удалить локальную ветку, вы можете использовать:
git branch -d <имя_ответки>
Чтобы удалить ветку принудительно, используйте -D вместо -d.
git branch -D <имя_ответки>
Удалить удаленно:
Есть два варианта:
git push origin: имя ветки
git push origin - удалить имя ветки
Я бы посоветовал вам использовать второй способ, так как он более интуитивно понятен.
|
С января 2013 года GitHub включил кнопку «Удалить ветку» рядом с каждой веткой на вашей странице «Ветви».
Соответствующее сообщение в блоге: Создание и удаление веток
|
Если вы хотите выполнить оба этих шага с помощью одной команды, вы можете создать для нее псевдоним, добавив следующий код в свой ~ / .gitconfig:
[псевдоним]
rmbranch = "! f () {git branch -d $ {1} && git push origin --delete $ {1};}; f"
Кроме того, вы можете добавить это в свою глобальную конфигурацию из командной строки, используя
git config --global alias.rmbranch \
'! f () {git branch -d $ {1} && git push origin --delete $ {1}; }; f '
ПРИМЕЧАНИЕ. При использовании -d (d в нижнем регистре) ветвь будет удалена только в том случае, если она была объединена. Чтобы выполнить удаление, вам нужно будет использовать -D (верхний регистр D).
|
Чтобы удалить ветку локально и удаленно
Оформить заказ в главную ветку - git checkout master
Удалите удаленную ветку - git push origin --delete 
Удалите вашу локальную ветку - git branch --delete 
|
Вы также можете сделать это с помощью git remote prune origin
$ git удаленное начало отсечения
Происхождение обрезки
URL: git@example.com/yourrepo.git
* [обрезано] origin / some-branchs
Он обрезает и удаляет ветки удаленного отслеживания из списка git branch -r.
|
В дополнение к другим ответам я часто использую инструмент git_remote_branch. Это дополнительная установка, но она дает вам удобный способ взаимодействия с удаленными ветвями. В этом случае удалить:
grb удалить ветку
Я обнаружил, что довольно часто использую команды публикации и отслеживания.
|
Однострочная команда для удаления как локального, так и удаленного:
D = название ветки; git branch -D $ D; git push origin: $ D
Или добавьте указанный ниже псевдоним в свой ~ / .gitconfig. Использование: git kill имя-ветки
[псевдоним]
kill = "! f () {git branch -D \" $ 1 \ "; git push origin --delete \" $ 1 \ ";}; f"
|
Удаление веток
Предположим, наша работа над веткой «контактная форма» завершена и мы уже интегрировали ее в «мастер». Поскольку он нам больше не нужен, мы можем удалить его (локально):
$ git branch -d контактная форма
И для удаления удаленной ветки:
git push origin - удалить контактную форму
|
Удалить удаленную ветку
git push origin: <имя-ветки>
Удалить локальную ветку
git branch -D <имя-ветки>
Удалить шаги локальной ветки:
оформить заказ в другой филиал
удалить местное отделение
|
Просто скажите:
git branch -d <имя-ветки>
git push origin: <имя-ветки>
|
git push origin --delete <имя ветки>
легче запомнить чем
git push origin: branchName
|
Теперь вы можете сделать это с помощью приложения GitHub Desktop.
После запуска приложения
Щелкните проект, содержащий ветку
Переключитесь на ветку, которую хотите удалить
В меню «Ветвь» выберите «Отменить публикацию ...», чтобы удалить ветку с серверов GitHub.
В меню «Ветвь» выберите «Удалить« имя_ ветки »...», чтобы ветка была удалена с вашего локального компьютера (он же машина, на которой вы в настоящее время работаете)
|
Удалить локально - (нормально)
git branch -d my_branch
Если ваша ветка находится в процессе перебазирования / слияния и это не было сделано должным образом, это означает, что вы получите сообщение об ошибке «Выполняется перебазирование / слияние», поэтому в этом случае вы не сможете удалить свою ветку.
Так что либо нужно решать ребазинг / слияние. В противном случае вы можете выполнить принудительное удаление, используя,
git branch -D my_branch
Чтобы удалить в удаленном:
git push --delete origin my_branch
Вы можете сделать то же самое, используя:
git push origin: my_branch # Легко запомнить, оба будут делать то же самое.
Графическое представление:
|
Это не сработает, если у вас есть тег с тем же именем, что и ветка на пульте дистанционного управления:
$ git push origin: имя-ветки или-тега
ошибка: dst refspec имя-ветки или-тега соответствует более чем одному.
ошибка: не удалось отправить некоторые ссылки на 'git@github.com: SomeName / some-repo.git'
В этом случае вам нужно указать, что вы хотите удалить ветку, а не тег:
git push origin: refs / heads / branch-or-tag-name
Точно так же, чтобы удалить тег вместо ветки, вы должны использовать:
git push origin: refs / tags / имя-ветки или-тега
|
Многие другие ответы приведут к ошибкам / предупреждениям. Этот подход относительно надежен, хотя вам все равно может понадобиться git branch -D branch_to_delete, если он, например, не полностью объединен с some_other_branch.
git checkout some_other_branch
git push origin: branch_to_delete
git branch -d branch_to_delete
Удаленная обрезка не требуется, если вы удалили удаленную ветку. Он используется только для получения самых последних пультов дистанционного управления, доступных в репозитории, который вы отслеживаете. Я заметил, что git fetch будет добавлять пульты, а не удалять их. Вот пример того, как git remote prune origin действительно что-то делает:
Пользователь Аделает шаги, указанные выше. Пользователь B запустит следующие команды, чтобы увидеть самые свежие удаленные ветки:
git fetch
git удаленное начало отсечения
git branch -r
|
Мне надоело гуглить этот ответ, поэтому я применил аналогичный подход к ответу, который crizCraig опубликовал ранее.
Я добавил в свой профиль Bash следующее:
function gitdelete () {
git push origin - удалить $ 1
git branch -D $ 1
}
Затем каждый раз, когда я заканчиваю работу с веткой (например, объединяю ее с мастером), я запускаю в своем терминале следующее:
gitdelete имя-ветки
... который затем удаляет my-branch-name как из источника, так и локально.
|
Перед выполнением
git branch --delete <ветка>
сначала убедитесь, что вы определили точное имя удаленной ветки, выполнив:
git ls-remote
Это подскажет вам, что именно вводить для значения . (ветка чувствительна к регистру!)
|
Использование:
git push origin: bugfix # Удаляет удаленную ветку
git branch -d bugfix # Необходимо удалить локальную ветку вручную
Если вы уверены, что хотите его удалить, запустите
git branch -D исправление ошибки
Теперь, чтобы очистить удаленные удаленные ветки, запустите
git удаленное начало отсечения
|
1
2
следующий
Весьма активный вопрос. Заработайте 10 репутации, чтобы ответить на этот вопрос. Требование репутации помогает защитить этот вопрос от спама и случаев отсутствия ответов.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с меткой git version-control git-branch git-push git-remote или задайте свой вопрос.